package com.gopay.scheduler.service.transsolutionordersnap;

import com.gopay.common.domain.solution.TransSolutionOrderSnap;
import com.gopay.scheduler.common.AcctProdTransRelSolution;

import java.util.List;

/**
 * CLASSNAME:TransSolutionOrderSnapService
 * Description:交易方案同步业务接口
 * DATE:2018/2/1/001
 * AUTHER:PANSHICHAO
 * www.gopay.com.cn Inc.All rights reserved.
 */
public interface TransSolutionOrderSnapService{
    /**
     * 获取数据库中全部的交易方案信息
     * @return 封装交易方案信息的List集合
     */
    List<AcctProdTransRelSolution> findAllAPTransRelSolution();
    /**
     * 获取交易方案排序表的信息总数
     * @return 信息总数
     */
    Integer findAllTransSolutionOrderSnapCount();
    /**
     * 获取交易方案排序表的信息
     * @return 封装交易方案排序信息的List集合
     */
    List<TransSolutionOrderSnap> findAllTransSolutionOrderSnapInfo();
    /**
     * 向交易方案排序表中添加数据
     * @param transSolutionOrderSnap:交易方案封排序信息装过后的实体类
     */
    void saveTransSolutionOrderSnapInfo(TransSolutionOrderSnap transSolutionOrderSnap);
    /**
     * 获取交易方案排序表的最后一个排序位置
     * @param prodCode:账户产品账号
     * @return 获取方案排序表中最后一个序号位
     */
    Integer getLastOrderByNum(String prodCode);
    /**
     * 获取交易方案信息
     * @return 获取方案交易方案信息
     */
    TransSolutionOrderSnap getAcctProdTransRelSolutionByTransCodeAndProdCode(String transCode,String prodCode);
    /**
     * 根据方案中交易编码账户方案和方案权限获取排序快照中的信息
     * 当返回值为null是证明方案信息中的方案权限有修改
     * @return 获取方案交易方案信息
     */
    TransSolutionOrderSnap getTransSolutionOrderSnapInfoByTransCodeAndProdCodeAndTranPriv(String transCode,String prodCode,String tranPriv);
}
